/*
 * Created on Feb 5, 2009
 *
 * TODO
 */
package jacky.lanlan.song.extension.vraptor2;

import java.lang.annotation.*;

/**
 * 被标注的 {@code LogicMethod} 返回的结果将用Json编码后输出。和 {@code JsonIntercepter} 配合使用。
 * <p>
 * 这个标注和 Vraptor2 自带的 {@code Remotable}
 * 的区别在于，被这个标注标记的方法可以返回任何类型的值，而只有这个返回值被编码为Json， 而 {@code Remotable} 则会自动编码一个
 * {@code Component} 里面所有 Outjected 的值。
 * 
 * @author Jacky.Song
 */
@Target( { ElementType.METHOD })
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Json {
	
	/**
	 * Json编码器。默认使用 {@code org.vraptor.remote.json.JSONSerializer}。
	 */
	Class<? extends JsonEncoder> encoder() default DefaultJsonEncoder.class;
	
	/**
	 * 响应类型。默认 "text/html;charset=utf-8"。
	 */
	String contentType() default "text/html;charset=utf-8";
	
	/**
	 * 响应Json文本编码类型，默认为 utf-8
	 */
	String encoding() default "utf-8";
	
}
